package com.lyz;

import com.github.benmanes.caffeine.cache.Caffeine;
import com.github.benmanes.caffeine.cache.LoadingCache;

import java.util.concurrent.TimeUnit;

public class CaffeineLoadingCache {
    public static void main(String[] args) {
        // 创建带有 CacheLoader 的缓存，当缓存缺失时自动加载数据
        LoadingCache<String, String> cache = Caffeine.newBuilder()
                .expireAfterWrite(5, TimeUnit.MINUTES)  // 设置写入后的过期时间
                .maximumSize(100)                      // 设置缓存的最大容量
                .build(key -> loadValueForKey(key));    // 定义加载数据的方法

        // 直接从缓存获取值，如果不存在则自动加载
        String value1 = cache.get("key1");
        System.out.println("Key1: " + value1);  // 输出: LoadedValue_key1

        String value2 = cache.get("key2");
        System.out.println("Key2: " + value2);  // 输出: LoadedValue_key2
    }

    // 模拟数据加载的方法
    private static String loadValueForKey(String key) {
        System.out.println("键值: " + key);
        return "值_" + key;
    }
}

